home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / vbcc / machines / amiga68k / libsrc / stdio / _fillbuf.c next >
Encoding:
C/C++ Source or Header  |  1995-08-28  |  670 b   |  24 lines

  1. #include <stdio.h>
  2.  
  3. /*  liest Daten in den Buffer   */
  4. int _fillbuf(FILE *f)
  5. {
  6.     _chkabort();
  7.     if(!f) return(EOF);
  8.     if((f->flags&(_READABLE|_WRITE|_EOF|_ERR))!=_READABLE) return(EOF);
  9.     f->flags|=_READ;
  10.     if(!f->bufsize){if(f->flags&_UNBUF) f->bufsize=1; else f->bufsize=BUFSIZ;}
  11.     if(!f->base)
  12.         if(!(f->base=(char *)malloc(f->bufsize+1)+1))
  13.             return(EOF);
  14.     f->pointer=f->base;
  15.     f->count=Read(f->filehandle,f->pointer,(long)f->bufsize);
  16.     if(--f->count<0){
  17.         if(f->count==-1) f->flags|=_EOF;
  18.          else            f->flags|=_ERR;
  19.         f->count=0;
  20.         return(EOF);
  21.     }
  22.     return((unsigned char) *f->pointer++);
  23. }
  24.